package com.question.business.post.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.question.business.post.entity.Post;
import com.question.business.post.model.ao.*;
import com.question.business.post.model.vo.PostAddVO;
import com.question.business.post.model.vo.PostDetailVO;
import com.question.business.post.model.vo.PostDropDownVO;
import com.question.business.post.model.vo.PostVO;

import javax.servlet.ServletOutputStream;
import java.util.List;

/**
 * 岗位服务
 *
 * @author star
 * @since 2023-09-13
 */
public interface IPostService extends IService<Post> {

    /**
     * 岗位分页查询
     *
     * @param ao 请求参数
     * @return Page<PostVO> 响应参数
     */
    Page<PostVO> queryPostPage(PostPageAO ao);

    /**
     * 岗位明细查询
     *
     * @param id 岗位ID
     * @return PostDetailVO 响应参数
     */
    PostDetailVO queryPostDetail(String id);

    /**
     * 岗位新增数据
     *
     * @param ao 请求参数
     * @return PostAddVO 响应参数
     */
    PostAddVO addPost(PostAddAO ao);

    /**
     * 岗位修改数据
     *
     * @param ao 数据
     */
    void updatePost(PostUpdateAO ao);

    /**
     * 岗位删除数据
     *
     * @param id 岗位ID
     */
    void deletePost(String id);

    /**
     * 岗位批量删除数据
     *
     * @param ids 请求参数
     */
    void deleteBatchPost(List<String> ids);

    /**
     * 岗位导出数据
     *
     * @param ao     请求参数
     * @param stream 输出流
     */
    void exportPost(PostPageAO ao, ServletOutputStream stream);

    /**
     * 岗位启用、停用
     *
     * @param ao 数据
     */
    void enablePost(PostEnabledAO ao);

    /**
     * 岗位下拉列表查询
     *
     * @param ao 请求参数
     * @return List<PostDropDownVO> 响应参数
     */
    List<PostDropDownVO> queryPostDropDown(PostDropDownAO ao);
}